package com.bwie;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * TODO
 *
 * @Description
 * @Author 36167
 * @Date 2025/3/14 8:35
 **/


public class Day0314 {
    public static void main(String[] args) {
        //构建普通的Java项目（10分）
        System.out.println("有如下7个元素黄药师，冯蘅，郭靖，黄蓉，郭芙，郭襄，郭破虏，使用Stream将以郭字开头的元素存入新数组");
        //(2)有如下7个元素黄药师，冯蘅，郭靖，黄蓉，郭芙，郭襄，郭破虏，使用Stream将以郭字开头的元素存入新数组（10分）
        ArrayList<String> list = new ArrayList<>();
        list.add("黄药师");
        list.add("冯蘅");
        list.add("郭靖");
        list.add("黄蓉");
        list.add("郭芙");
        list.add("郭襄");
        list.add("郭破虏");
        ArrayList<String> a1 = new ArrayList<>();
        list.stream().forEach(a -> {
            boolean b = a.contains("郭");
            if (b) {
                a1.add(a);
            }
        });
        a1.stream().forEach(System.out::println);


        System.out.println("已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风}，使用Stream取出前2个元素并在控制台打印输出。取出后2个元素并在控制台打印输出");
        //(3)已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风}，使用Stream取出前2个元素并在控制台打印输出。取出后2个元素并在控制台打印输出。（10分）
        ArrayList<String> a3 = new ArrayList<>();
        a3.add("陈玄风");
        a3.add("梅超风");
        a3.add("陆乘风");
        a3.add("曲灵风");
        a3.add("武眠风");
        a3.add("冯默风");
        a3.add("罗玉风");
        List<String> strings = a3.subList(0, 2);
        List<String> strings1 = a3.subList(5, 7);

        System.out.println(strings);
        System.out.println(strings1);

        System.out.println("有如下整数1，-2，-3，4，-5使用Stream取元素绝对值并打印");
        //(4)有如下整数1，-2，-3，4，-5使用Stream取元素绝对值并打印（10分）
        ArrayList<Integer> integers = new ArrayList<>();
        integers.add(1);
        integers.add(-2);
        integers.add(-3);
        integers.add(4);
        integers.add(-5);
        integers.stream().forEach(a -> {
            System.out.println(Math.abs(a));
        });
        //(5)给定一个数字列表，如何返回一个由每个数的平方构成的列表呢，比如给定【1，2，3，4，5】， 应该返回【1，4，9，16，25】（10分）
        System.out.println("给定一个数字列表，如何返回一个由每个数的平方构成的列表呢，比如给定【1，2，3，4，5】， 应该返回【1，4，9，16，25】");
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        ArrayList<Integer> list1 = new ArrayList<>();
        arrayList.forEach(a -> {
            list1.add((int) Math.pow(a, 2));
        });
        System.out.println(list1);
        System.out.println("有两个集合，一个有6个男演员，一个有6个女演员");

        //有两个集合，一个有6个男演员，一个有6个女演员，完成下面的功能
        //1  /创建集合存储元素
        ArrayList<String> manArray = new ArrayList<>();
        manArray.add("刘德华");
        manArray.add("成龙");
        manArray.add("吴彦祖");
        manArray.add("周润发");
        manArray.add("周星驰");
        manArray.add("吴京");
        //(6)男演员只要名字为3个字的前三人（10分）
        System.out.println("男演员只要名字为3个字的前三人");
        ArrayList<String> list2 = new ArrayList<>();
        manArray.stream().forEach(a -> {
            if (a.length() >= 3) {
                list2.add(a);
            }
        });
        List<String> strings2 = list2.subList(0, 3);
        System.out.println(strings2);

        //9
        ArrayList<String> womanList = new ArrayList<>();
        womanList.add("林心如");
        womanList.add("孙俪");
        womanList.add("柳岩");
        womanList.add("林青霞");
        womanList.add("王祖贤");
        womanList.add("张曼玉");

        //(7)女演员只要姓林的，并且不要第一个（10分）
        System.out.println("女演员只要姓林的，并且不要第一个");
        ArrayList<String> list3 = new ArrayList<>();
        womanList.stream().filter(a -> a.contains("林")).forEach(a -> list3.add(a));
        List<String> strings3 = list3.subList(1, 2);
        System.out.println(strings3);


        //(8)（10分）
        System.out.println("把过滤后的男演员姓名和女演员姓名合并到一起");
        ArrayList<String> list4 = new ArrayList<>();
        strings2.stream().forEach(a->{
            list4.add(a);
            strings3.stream().forEach(av->{
                list4.add(av);
            });
        });
        Set<String> collect = list4.stream().collect(Collectors.toSet());
        System.out.println(collect);

        //(9)把上一步操作后的元素作为构造方法的参数创建演员对象（实例化一个Actor类，此处尝试使用map），遍历数组（10分）
        //(10)代码符合阿里巴巴开发规范（10分）

    }
}
